// ean-constants.js - EAN/UPC 编码所需常量（Vite 可用 ESM 格式）

// 条码两侧的起始/结束符（二进制模式）
export const SIDE_BIN = '101';

// 条码中间分隔符（用于 EAN-13 等）
export const MIDDLE_BIN = '01010';

// 各种编码类型的二进制模式（L, G, R, O, E）
export const BINARIES = {
  // L 类型：左侧数据（标准编码）
  L: [
    '0001101', '0011001', '0010011', '0111101', '0100011',
    '0110001', '0101111', '0111011', '0110111', '0001011'
  ],
  // G 类型：左侧数据（反向奇偶性，用于 EAN-13 前缀）
  G: [
    '0100111', '0110011', '0011011', '0100001', '0011101',
    '0111001', '0000101', '0010001', '0001001', '0010111'
  ],
  // R 类型：右侧数据（标准反向）
  R: [
    '1110010', '1100110', '1101100', '1000010', '1011100',
    '1001110', '1010000', '1000100', '1001000', '1110100'
  ],
  // O 类型：UPC-E 奇数编码
  O: [
    '0001101', '0011001', '0010011', '0111101', '0100011',
    '0110001', '0101111', '0111011', '0110111', '0001011'
  ],
  // E 类型：UPC-E 偶数编码
  E: [
    '0100111', '0110011', '0011011', '0100001', '0011101',
    '0111001', '0000101', '0010001', '0001001', '0010111'
  ]
};

// EAN-2 附加码结构（用于期刊等）
export const EAN2_STRUCTURE = ['LL', 'LG', 'GL', 'GG'];

// EAN-5 附加码结构（用于图书价格等）
export const EAN5_STRUCTURE = [
  'GGLLL', 'GLGLL', 'GLLGL', 'GLLLG',
  'LGGLL', 'LLGGL', 'LLLGG', 'LGLGL',
  'LGLLG', 'LLGLG'
];

// EAN-13 主条码左侧结构（由首位数字决定）
export const EAN13_STRUCTURE = [
  'LLLLLL', 'LLGLGG', 'LLGGLG', 'LLGGGL',
  'LGLLGG', 'LGGLLG', 'LGGGLL', 'LGLGLG',
  'LGLGGL', 'LGGLGL'
];